var userListGrid;
var userListArea;
var userListTab;
var userListStore;
var pageSize = 20;

/* 查询项设置 */
var qname;
var qgid;
var qgname;
var qlogid;
var qnumber;
var qtype;
var qtypename;
var qflag;
var qarea;
var qareaname;

/**
 * 重置参数值
 */
function renewQueryParam() {
	qname = "";
	qgid = "";
	qgname = "";
	qlogid = "";
	qnumber = "";
	qtype = "";
	qtypename = "";
	qflag = "";
	qarea = "";
	qareaname = "";
}

function userlist(tabid) {
	renewQueryParam();

	userListStore = new Ext.data.JsonStore({
				idProperty : 'id',
				remoteSort : false,
				totalProperty : 'totalCount',
				root : 'userList',
				fields : ['id', 'name', 'logid', 'sex', 'number', 'groupName',
						'rating', 'phone', 'flag'],

				// load using script tags for cross domain, if the data in on
				// the same domain as
				// this page, an HttpProxy would be better
				proxy : new Ext.data.ScriptTagProxy({
							url : context + '/system/user.do?method=list'
						})
			});
	//userListStore.setDefaultSort('name', 'desc');

	userListGrid = new Ext.grid.GridPanel({
				id : tabid,
				store : userListStore,
				closable : true,
				layout : 'fit',
				columns : [{
							id : 'iname',
							header : '姓名',
							width : 75,
							sortable : true,
							dataIndex : 'name',
							renderer : renderName
						}, {
							header : '登录账号',
							width : 75,
							sortable : true,
							dataIndex : 'logid'
						}, {
							header : '性别',
							width : 75,
							sortable : false,
							dataIndex : 'sex'
						}, {
							header : '员工编号',
							width : 75,
							sortable : true,
							dataIndex : 'number'
						}, {
							header : '所在组/部门',
							width : 150,
							sortable : false,
							dataIndex : 'groupName'
						}, {
							header : '级别',
							width : 85,
							sortable : true,
							dataIndex : 'rating'
						}, {
							header : '联系电话',
							width : 85,
							sortable : false,
							dataIndex : 'phone'
						}, {
							header : '&nbsp;',
							width : 85,
							sortable : true,
							dataIndex : 'id',
							renderer : renderHD
						}],
				stripeRows : true,
				autoExpandColumn : 'iname',
				bodyStyle : 'width:100%',
				autoWidth : true,
				autoScroll : true,
				title : '用户列表',
				border : false,
				viewConfig : {
					forceFit : true
				},
				// config options for stateful behavior
				stateful : true,
				stateId : 'grid',
				loadMask : {
					msg : "数据加载中，请稍等..."
				},
				tbar : new Ext.Toolbar({
							autoWidth : true,
							autoShow : true,
							items : [{
										iconCls : 'queryUser',
										text : '用户查询',
										handler : handleQueryUser
									}, '-', {
										id : 'delUserButton',
										iconCls : 'delUser',
										text : '删除用户',
										disabled : true,
										handler : handleDelUser
									}, '-', {
										id : 'partUserButton',
										iconCls : 'partUser',
										text : '兼职设置',
										disabled : true,
										handler : handlePartUser
									}]
						}),
				bbar : new Ext.PagingToolbar({
							pageSize : pageSize,// 每页显示的记录值
							store : userListStore,
							displayInfo : true,
							displayMsg : '总记录数 {0} - {1} of {2}',
							emptyMsg : "没有记录"
						})
			});

	// Ext.getDom('test').value
	// render the grid to the specified div in the page
	// userListGrid.render(areaid);

	userListGrid.on('click', function() {
				if (userListGrid.getSelectionModel().hasSelection()) {
					Ext.getCmp('delUserButton').enable();
					Ext.getCmp('partUserButton').enable();
				} else {
					Ext.getCmp('delUserButton').disable();
					Ext.getCmp('partUserButton').disable();
				}
			});

	/* 设置自定义参数 */
	userListStore.on('beforeload', function(thiz, options) {
				resetUserListView();
				Ext.apply(thiz.baseParams, {
							qname : qname,
							qgid : qgid,
							qlogid : qlogid,
							qnumber : qnumber,
							qtype : qtype,
							qarea : qarea,
							qflag : qflag
						});
			});

	userListGrid.setIconClass('tabs');

	userListStore.load({
				params : {
					start : 0,
					limit : pageSize
				}
			});

	return userListGrid;
}

function renderName(value, cellmeta, record, rowIndex, columnIndex, store) {
	var resultString = String
			.format(
					'<b><a href="javascript:void(0);" onclick="javascript:editUser(\'{1}\', \'{0}\');">{0}</a></b>',
					value, record.data.id);
	if (record.data.flag == "-1") {
		resultString = String
				.format(
						'<b><a href="javascript:void(0);" onclick="javascript:editUser(\'{1}\', \'{0}\');"><font color="red">{0}</font></a></b>',
						value, record.data.id);
	}

	return resultString;
}

/**
 * 重置用户密码(000000)
 * 
 * @param {}
 *            value
 * @param {}
 *            cellmeta
 * @param {}
 *            record
 * @param {}
 *            rowIndex
 * @param {}
 *            columnIndex
 * @param {}
 *            store
 * @return {}
 */
function renderHD(value, cellmeta, record, rowIndex, columnIndex, store) {
	var resultString = String
			.format(
					'<b><a href="javascript:void(0);" onclick="javascript:restPWD(\'{1}\', \'{0}\');">密码重置</a></b>',
					 record.data.name, record.data.id);

	return resultString;
}

/**
 * 重置用户密码(000000)
 * @param {} id 用户ID
 * @param {} name 用户姓名
 */
function restPWD(id, name) {
	Ext.MessageBox.confirm('提示', '确定重置用户密码', function(btn) {
		if (btn == 'yes') {
			Ext.MessageBox.wait('提交保存过程中...');
			Ext.Ajax.request({
						url : context + "/system/user.do?method=resetpwd",
						method : 'POST',
						async : false,
						params : {
							id : id
						},
						success : function(response, options) {
							var o = Ext.util.JSON.decode(response.responseText);
							if (!o.success) {
								Ext.Msg.alert('提示', '重置用户密码失败！');
							} else {
								Ext.Msg.alert('提示', '重置 用户密码成功！请通知用户及时修改密码');
							}
						}
					});
		}
	});
}

var queryUserWin;
var queryUserForm

function handleQueryUser() {
	if (queryUserWin) {
		queryUserWin = null;
	}

	queryUserForm = new Ext.FormPanel({
		labelWidth : 75, // label settings here cascade unless
		// overridden
		frame : false,
		bodyStyle : 'padding:5px 5px 0',
		width : 350,
		defaults : {
			width : 230
		},
		defaultType : 'textfield',

		items : [
				{
					fieldLabel : '姓名',
					id : 'qname',
					name : 'qname'
				},
				{
					fieldLabel : '登录帐号',
					id : 'qlogid',
					name : 'qlogid'
				},
				{
					fieldLabel : '员工编号',
					id : 'qnumber',
					name : 'qnumber'
				},
				getWBComboStore('user-rating', '', 'qrating_', '用户级别', 'qtype',
						null, '', true),
				{
					xtype : 'hidden',
					name : 'qtype',
					id : 'qtype'
				},
				getWBComboStore('area', '', 'qarea_', '所属区域', 'qarea', null,
						'', true), {
					xtype : 'hidden',
					name : 'qarea',
					id : 'qarea'
				}, getGCombo('所在组/部门', 'qgid', null, '', true), {
					xtype : 'hidden',
					id : 'qgid',
					name : 'qgid'
				}, new Ext.form.RadioGroup({
							fieldLabel : '有效性',
							// //RadioGroup.fieldLabel 标签与
							// Radio.boxLabel 标签区别
							// width : "200",
							// hideLabel : false, // 隐藏RadioGroup标签
							items : [new Ext.form.Radio({ // 三个必须项
										id : "qflag0",
										// checked : true, //
										// 设置当前为选中状态,仅且一个为选中.
										boxLabel : "有效", // Radio标签
										name : "qflag", // 用于form提交时传送的参数名
										inputValue : "0", // 提交时传送的参数值
										listeners : {
											check : function(checkbox, checked) { // 选中时,调用的事件
												if (checked) {

												}
											}
										}
									}), new Ext.form.Radio({ // 以上相同
										id : "qflag1",
										boxLabel : "无效",
										name : "qflag",
										inputValue : "-1",
										listeners : {
											check : function(checkbox, checked) {
												if (checked) {

												}
											}
										}
									})]
						})]
	});

	queryUserForm.getForm().load({
				url : context + '/system/result4form.jsp',
				params : {
					qname : qname,
					qgid : qgid,
					_gname : qgname,
					qlogid : qlogid,
					qnumber : qnumber,
					qtype : qtype,
					qrating_ : qtypename,
					qarea : qarea,
					qarea_ : qareaname,
					qflag : qflag
				},
				success : function(form, action) {
					var resultInfo = listSimpleJson(action.result.data);

					/* 有效性 */
					var qflag = resultInfo.get("qflag");

					if (qflag == "0") {
						Ext.get("qflag0").dom.checked = true;
					} else if (qflag == "-1") {
						Ext.get("qflag1").dom.checked = true;
					}
				},
				failure : function(form, action) {
					Ext.Msg.alert('初始化查询条件失败');
				}
			});

	queryUserWin = new Ext.Window({
				renderTo : Ext.getBody(),
				layout : 'fit',
				width : 400,
				height : 300,
				title : '用户查询',
				resizable : false,
				plain : true,
				modal : true,

				items : [queryUserForm],

				buttons : [{
							id : 'userQueryButton',
							text : '提 交',
							handler : function() {
								qname = Ext.getCmp('qname').getValue();
								qgid = Ext.getCmp('qgid').getValue();
								qgname = Ext.getCmp('_gname').getValue();
								qlogid = Ext.getCmp('qlogid').getValue();
								qnumber = Ext.getCmp('qnumber').getValue();
								qtype = Ext.getCmp('qtype').getValue();
								qtypename = Ext.getCmp('qrating_')
										.getRawValue();
								qarea = Ext.getCmp('qarea').getValue();
								qareaname = Ext.getCmp('qarea_').getRawValue();

								qflag = '';

								if (Ext.get("qflag0").dom.checked) {
									qflag = '0';
								} else if (Ext.get("qflag1").dom.checked) {
									qflag = '-1';
								}
								userListStore.reload({
											params : {
												start : 0,
												limit : pageSize,
												qname : qname,
												qgid : qgid,
												qlogid : qlogid,
												qnumber : qnumber,
												qtype : qtype,
												qarea : qarea,
												qflag : qflag
											}
										});
								queryUserWin.close();
								queryUserWin = null;
							}
						}, {
							text : '关 闭',
							handler : function() {
								queryUserWin.close();
								queryUserWin = null;
							}
						}]
			});

	queryUserWin.show(this);
}

/**
 * 重置用户列表视图
 * 
 * 
 */
function resetUserListView() {
	/* 取消已选择数据 */
	// userListGrid.getSelectionModel().clearSelections();
	/* 删除按钮置无效 */
	Ext.getCmp('delUserButton').disable();
	Ext.getCmp('partUserButton').disable();
}

function handleDelUser() {
	if (userListGrid.getSelectionModel().hasSelection()) {
		Ext.MessageBox.confirm('提示', '确定删除用户？', deleteUser);
	} else {
		Ext.Msg.alert('提示', '请选择要删除的用户！');
	}
}

function handlePartUser() {
	if (userListGrid.getSelectionModel().hasSelection()) {
		var selectedNodes = userListGrid.getSelectionModel().getSelections();
		var userid = selectedNodes[0].data.id;
		editUserPart(userid, selectedNodes[0].data.name);
	}
}

/**
 * 重载用户列表store
 */
function reloadUserListStore() {
	if (userListStore) {
		userListStore.reload({
					start : 0,
					limit : pageSize
				});
	}
}

function deleteUser(btn) {
	if (btn == 'yes') {
		var ids = "";
		var selectedNodes = userListGrid.getSelectionModel().getSelections();
		for (var i = 0; i < selectedNodes.length; i++) {
			if (i < selectedNodes.length - 1) {
				ids += selectedNodes[i].data.id + ",";
			} else {
				ids += selectedNodes[i].data.id;
			}
		}

		Ext.Ajax.request({
					url : context + "/system/user.do?method=delete",
					method : 'POST',
					async : false,
					params : {
						ids : ids
					},
					success : function(response, options) {
						var o = Ext.util.JSON.decode(response.responseText);
						if (!o.success) {
							Ext.Msg.alert('提示', '删除用户失败！');
						} else {
							Ext.Msg.alert('提示', '已成功删除用户！');
							reloadUserListStore();
						}
					}
				})
	}
}